From: Colin Walters Date: Wed, 19 Jul 2017 13:19:16 +0000 (-0400) Subject: lib/commit: Fix EBADF with GENERATE_SIZES option for commit X-Git-Tag: archive/raspbian/2022.1-3+rpi1~1^2~4^2~34^2~10 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/success/%22http:/www.example.com/cgi/success?a=commitdiff_plain;h=f9f7d55e7954ebde075c1afd18256d3c017feacd;p=ostree.git lib/commit: Fix EBADF with GENERATE_SIZES option for commit Regression from previous tmpfile refactoring; unfortunately the `OSTREE_REPO_COMMIT_MODIFIER_FLAGS_GENERATE_SIZES` option only has coverage via gjs currently. Might expose it via the cmdline in a later option, but in the big picture the idea was that this data is better kept in static deltas. Closes: https://github.com/ostreedev/ostree/issues/1014 Closes: #1016 Approved by: jlebon --- diff --git a/src/libostree/ostree-repo-commit.c b/src/libostree/ostree-repo-commit.c index a89be88b..bcd9c2d9 100644 --- a/src/libostree/ostree-repo-commit.c +++ b/src/libostree/ostree-repo-commit.c @@ -734,6 +734,17 @@ write_content_object (OstreeRepo *self, } else { + /* Update size metadata if configured */ + if (indexable && object_file_type == G_FILE_TYPE_REGULAR) + { + struct stat stbuf; + + if (!glnx_fstat (tmpf.fd, &stbuf, error)) + return FALSE; + + repo_store_size_entry (self, actual_checksum, unpacked_size, stbuf.st_size); + } + /* This path is for regular files */ if (!commit_loose_regfile_object (self, actual_checksum, &tmpf, uid, gid, mode, @@ -743,17 +754,6 @@ write_content_object (OstreeRepo *self, ostree_object_type_to_string (OSTREE_OBJECT_TYPE_FILE)); } - /* Update size metadata if configured */ - if (indexable && object_file_type == G_FILE_TYPE_REGULAR) - { - struct stat stbuf; - - if (!glnx_fstat (tmpf.fd, &stbuf, error)) - return FALSE; - - repo_store_size_entry (self, actual_checksum, unpacked_size, stbuf.st_size); - } - /* Update statistics */ g_mutex_lock (&self->txn_stats_lock); self->txn_stats.content_objects_written++;